home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / utilitys / 351 / mandle / mandle.doc next >
Text File  |  1988-12-10  |  7KB  |  140 lines

  1.      Everyone  owning  a  computer  with  any  kind  of  graphics 
  2. capability  should  be able to enjoy the spectacular  regions  of 
  3. chaos surrounding the famous Mandelbrot Set. With 16 colours, 320 
  4. by  200 resolution and the powerful 68000 processor,  the  Atrari 
  5. STs can provide wonderful examples.
  6.  
  7.      For those among you who have not heard of this  mathematical 
  8. wonderland before, the Mandelbrot Set is a region surrounding the 
  9. origin  of  the complex plane.  What complex numbers are  is  not 
  10. important.  All  that  you  need to  know  is  that  calculations 
  11. involving  a pair of x,y coordinates are repeated  several  times 
  12. until either a set limit to the number of repetitions is  reached 
  13. or  a simple condition is met (see Procedure Calc in the  program 
  14. listing for details). The number of repetitions needed is used to 
  15. determine the colour of the pixel at this position.    
  16.      To  fill a complete  screen this  procedure must be executed 
  17. 320*200=64000  times.  Remember that each time the  procedure  is 
  18. called  there  is  the  possibility  that  the  total  number  of 
  19. repetitions  may reach the limit selected (up to  500).  Each  of 
  20. these   repetitions  contains  several  real  number   arithmetic 
  21. operations. Even on an 8 MHz Atari this is a formidable amount of 
  22. processing.
  23.  
  24.      Up  until now the time taken to complete a drawing has  been 
  25. the main drawback of all published programs which may be used  to 
  26. draw the set and its neighbourhood (the actual Mandelbrot set  is 
  27. the  region,   conventionally  coloured  black,   in  which   the 
  28. repetitions  reach the limit imposed without ever satisfying  the 
  29. condition). It could take the patience of a saint, not to mention 
  30. a  computer,  to  wait  for four hours or more  when  drawing  an 
  31. intricate  area  near  the central set.  (and this  would  be  in 
  32. machine code!)
  33.      This  program presents a powerful algorithm which  decreases 
  34. the  time  taken  in these calculations by between a  half  to  a 
  35. quarter of that taken by the standard method!
  36.  
  37.      The  program was written in GFA Basic, chosen for both  it`s 
  38. speed  when interpreted and because it may be compiled to  stand-
  39. alone machine code which runs almost as fast as could be achieved 
  40. with direct assembler.
  41.      To  achieve such a speed increase over conventional  methods 
  42. it is necessary to eliminate many of the calls to the   iterative 
  43. procedure,  Procedure Calc.  The picture is drawn a row of pixels 
  44. at  a  time  with  Calc  called  only  every  second  pixel.  The 
  45. intermediate  pixels are only referred to Calc if the  pixels  on 
  46. either side are assigned different colours.  An array, P%(2,320), 
  47. is  used  to store the colours during  this  process.  A  further 
  48. saving is made by calculating alternate rows in this way and then 
  49. filling  in  the intermediate rows,  only calling Calc  when  the 
  50. pixels above and below the current pixel are different.
  51.  
  52.      The  program  itself  is driven by GEM  menus  and  provides 
  53. facilities to save and load drawings;  the ability to create  new 
  54. drawings,  both  by typing parameters  (bottom right  x,y  coord-
  55. inates  of the area,  height of the area and limit on  number  of 
  56. repetitions) and by zooming in to an area of an existing  picture 
  57. display;  screen  dumps  on Epson compatible printers  and  three 
  58. types  of  colour cycling,  providing stunning  special  effects. 
  59.      The code is liberally commented and it should be  relatively 
  60. easy  to adapt the main procedures to other dialects of Basic  or 
  61. different languages.
  62.      One feature of the code worth mentioning is the need to  set 
  63. up  the colour pallette carefully since GEM's colour  numbers  are 
  64. incompatible with the Atari's: see Procedure Pallette.
  65.  
  66.      To run the program the Atari must be in low resolution  mode. 
  67. Simply double-click on MANDEL.PRG,  the compiled GFA code,  and  a 
  68. menu bar will appear. Lets draw your first picture!
  69.               Select "Options" from the menu bar and click on "New 
  70. Picture". This prompts a request for the four necessary parameters 
  71. to which you should respond as follows:
  72.  
  73.      Real (x) coordinate of bottom left           = -3
  74.      Imaginary (y) part                           = -2
  75.      Height of scan                               =  4
  76.      Maximum number of iterations (repetitions)   = 40
  77.  
  78.      These  values are the ones needed to give you a  bird's  eye 
  79. view of the entire area of interest around the Mandelbrot Set.
  80.      This  is  a simple region to draw,  even without  using  the 
  81. special algorithm to cut  down the number of calculations needed. 
  82. Times  for the completion of a drawing of this region  are  given 
  83. below  (N.B.  to  place all pixels on the screen using  the  Plot 
  84. command takes roughly 1 minute even without any calculations!):
  85.  
  86.      1)   Interpreted Basic, all pixels calculated      11.3 min.
  87.  
  88.      2)   Interpreted  Basic,    special algorithm       6   min.
  89.  
  90.      3)   Compiled  Basic,       special algorithm       2.5 min.
  91.  
  92.      Part  of the fun,  given reasonable drawing  times,  is  the 
  93. exploration of the region using the "Zoom" option.
  94.      A  box  appears  which may be moved around  the  screen  and 
  95. varied  in  area using the left mouse button (smaller)  or  right 
  96. mouse  button  (larger).  Once an area to be magnified  has  been 
  97. selected  a press of the Space Bar will set the  size  parameters 
  98. and request an iteration limit.
  99.      Drawing may be terminated by holding down both mouse buttons 
  100. at the end of a two row drawing cycle.
  101.      This method is also used to end a special effects  sequence. 
  102. While  in such a sequence,  the colour cycling may be speeded  up 
  103. (left  button) or slowed down (right button).  N.B.  the  colours 
  104. used in FX1 and FX2 are selected randomly whenever called.
  105.      To  help get you started here are the parameters  needed  to 
  106. draw 7 of the infinite number of areas worth examining:
  107.  
  108.  -0.6397597794      0.49651713442      0.00036595175879        85
  109.  
  110.  -0.17654926992     1.0226819053       0.020270540348         200
  111.  
  112.  -0.7647            0.09134478         0.000337254            250
  113.  
  114.  -0.74716042634     0.092600591738     0.0003656176938        200
  115.  
  116.  -0.74742219026     0.092574071593     0.00002594815003       250
  117.  
  118.   0.26745017517     0.0036936648457    0.0006335768162        200
  119.  
  120.   0.2678361353      0.0038701979279    0.00011288901834       500
  121.  
  122.      This  last is a real test of the algorithm - not only   does 
  123. the drawing of this region involve up to 500 iterations (probably 
  124. the  upper limit because of arithmetic rounding errors  affecting 
  125. accuracy)  but  also  the region in  question  has  an  extremely 
  126. complex structure with rapidly changing colours.  In compiled GFA 
  127. Basic the region is drawn in 2 hr 46 min.  250 iterations is  the 
  128. greatest  number  you will normally need and you  may  expect  to 
  129. complete such a drawing in around 1 hour (compiled Basic).
  130.  
  131.      The GFA Basic source code,  MANDEL.LST,  is provided for  the 
  132. benefit  of those who wish to examine the algorithm (which may  be 
  133. used to shorten execution times of other,  similar programs).  The 
  134. listing  is given in ASCII format so that non-GFA Basic users  may 
  135. dump it.
  136.      I  hope  you find the Mandelbrot set as fascinating  and  as 
  137. beautiful as I do.  Many other effects are possible, feel free to 
  138. add your own. Happy drawing!      
  139.  
  140.